文件 IO
检查文件权限
const (
PermR = (4)
PermW = (2)
PermX = (1)
)
if info, err := os.Stat("/proc/1/cmdline"); err == nil {
log.Println(info.Mode())
if info.Mode()&PermR == 0 {
log.Fatalln("没有对 /proc/1/cmdline 的读权限")
}
} else {
log.Fatalln(err)
}
监控文件变化
Linux 提供了 inotify 来监控文件系统的变化,有些库对其的包装,这些库有:
func watch(p string, event chan<- EventItem) {
watcher, err := inotify.NewWatcher()
if err != nil {
log.Fatal(err)
}
dir := path.Dir(p)
err = watcher.Watch(dir)
if err != nil {
log.Fatal(err)
}
register(p)
go func() {
defer watcher.Close()
for {
select {
case ev := <-watcher.Event:
if ev.Mask&(inotify.IN_CLOSE_WRITE) > 0 &&
p == ev.Name {
event <- diff(p)
}
case err := <-watcher.Error:
log.Println("error:", err)
}
}
}()
}
inotify 无法监视 /proc 这种目录 |